table of contents
include/ldb.h(3) | Library Functions Manual | include/ldb.h(3) |
NAME¶
include/ldb.h - Samba's ldb database.
SYNOPSIS¶
#include <stdbool.h>
#include <talloc.h>
#include <tevent.h>
#include <ldb_version.h>
#include <ldb_errors.h>
Data Structures¶
struct ldb_val
Result value. struct ldb_message_element
results are given back as arrays of ldb_message_element struct
ldb_message
a ldb_message represents all or part of a record. struct
ldb_ldif
LDIF record. struct ldb_debug_ops
the user can optionally supply a debug function. struct ldb_utf8_fns
The user can optionally supply a custom utf8 functions, to handle comparisons
and casefolding. struct ldb_parse_tree
struct ldb_schema_syntax
struct ldb_schema_attribute
struct ldb_dn_extended_syntax
struct ldb_sd_flags_control
struct ldb_search_options_control
struct ldb_paged_control
struct ldb_extended_dn_control
struct ldb_server_sort_control
struct ldb_sort_resp_control
struct ldb_asq_control
struct ldb_dirsync_control
struct ldb_vlv_req_control
struct ldb_vlv_resp_control
struct ldb_verify_name_control
struct ldb_control
struct ldb_extended
struct ldb_seqnum_request
struct ldb_seqnum_result
struct ldb_result
struct ldb_reply
struct ldb_search
struct ldb_add
struct ldb_modify
struct ldb_delete
struct ldb_rename
struct ldb_register_control
struct ldb_register_partition
struct ldb_request
Macros¶
#define LDB_FLAG_MOD_MASK 0x3
There are a number of flags that are used with ldap_modify() in
ldb_message_element.flags fields. #define LDB_FLAG_MOD_TYPE(flags)
((flags) & LDB_FLAG_MOD_MASK)
use this to extract the mod type (enum) from the operation #define
LDB_FLAG_MOD_ADD 1
Value used in ldap_modify() to indicate that attributes are being added.
#define LDB_FLAG_MOD_REPLACE 2
Value used in ldap_modify() to indicate that attributes are being replaced.
#define LDB_FLAG_MOD_DELETE 3
Value used in ldap_modify() to indicate that attributes are being deleted.
#define LDB_FLAG_FORCE_NO_BASE64_LDIF 4
Flag value used in ldb_ldif_write_trace() to enforce binary encoded attribute
values per attribute. #define LDB_FLAG_INTERNAL_MASK 0xFFFFFFF0
flag bits on an element usable only by the internal implementation #define
LDB_OID_COMPARATOR_AND '1.2.840.113556.1.4.803'
OID for logic AND comparison. #define LDB_OID_COMPARATOR_OR
'1.2.840.113556.1.4.804'
OID for logic OR comparison. #define LDB_DEBUG_ALWAYS_LOG
LDB_DEBUG_FATAL
#define LDB_FLG_RDONLY 1
Flag value for database connection mode. #define LDB_FLG_NOSYNC 2
Flag value for database connection mode. #define LDB_FLG_RECONNECT 4
Flag value to specify autoreconnect mode. #define LDB_FLG_NOMMAP 8
Flag to tell backends not to use mmap. #define LDB_FLG_SHOW_BINARY 16
Flag to tell ldif handlers not to force encoding of binary structures in
base64. #define LDB_FLG_ENABLE_TRACING 32
Flags to enable ldb tracing. #define LDB_FLG_DONT_CREATE_DB 64
Flags to tell LDB not to create a new database file: #define
LDB_ATTR_FLAG_HIDDEN (1<<0)
The attribute is not returned by default. #define
LDB_ATTR_FLAG_ALLOCATED (1<<1)
#define LDB_ATTR_FLAG_FIXED (1<<2)
The attribute is supplied by the application and should not be removed.
#define LDB_ATTR_FLAG_UNIQUE_INDEX (1<<3)
#define LDB_ATTR_FLAG_SINGLE_VALUE (1<<4)
#define LDB_ATTR_FLAG_FORCE_BASE64_LDIF (1<<5)
#define LDB_ATTR_FLAG_FROM_DB (1<<6)
#define LDB_ATTR_FLAG_INDEXED (1<<7)
#define LDB_SYNTAX_DN '1.3.6.1.4.1.1466.115.121.1.12'
LDAP attribute syntax for a DN. #define LDB_SYNTAX_DIRECTORY_STRING
'1.3.6.1.4.1.1466.115.121.1.15'
LDAP attribute syntax for a Directory String. #define
LDB_SYNTAX_INTEGER '1.3.6.1.4.1.1466.115.121.1.27'
LDAP attribute syntax for an integer. #define
LDB_SYNTAX_ORDERED_INTEGER 'LDB_SYNTAX_ORDERED_INTEGER'
Custom attribute syntax for an integer whose index is lexicographically
ordered by attribute value in the database. #define
LDB_SYNTAX_BOOLEAN '1.3.6.1.4.1.1466.115.121.1.7'
LDAP attribute syntax for a boolean. #define LDB_SYNTAX_OCTET_STRING
'1.3.6.1.4.1.1466.115.121.1.40'
LDAP attribute syntax for an octet string. #define LDB_SYNTAX_UTC_TIME
'1.3.6.1.4.1.1466.115.121.1.53'
LDAP attribute syntax for UTC time. #define LDB_SYNTAX_GENERALIZED_TIME
'1.3.6.1.4.1.1466.115.121.1.24'
#define LDB_SYNTAX_OBJECTCLASS 'LDB_SYNTAX_OBJECTCLASS'
#define LDB_CONTROL_BYPASS_OPERATIONAL_OID '1.3.6.1.4.1.7165.4.3.13'
OID for getting and manipulating attributes from the ldb without interception
in the operational module. #define
LDB_CONTROL_BYPASS_OPERATIONAL_NAME 'bypassoperational'
#define LDB_CONTROL_RECALCULATE_RDN_OID '1.3.6.1.4.1.7165.4.3.30'
OID for recalculate RDN (rdn attribute and 'name') control. #define
LDB_CONTROL_RECALCULATE_SD_OID '1.3.6.1.4.1.7165.4.3.5'
OID for recalculate SD control. #define LDB_CONTROL_RECALCULATE_SD_NAME
'recalculate_sd'
#define LDB_CONTROL_REVEAL_INTERNALS '1.3.6.1.4.1.7165.4.3.6'
REVEAL_INTERNALS is used to reveal internal attributes and DN components which
are not normally shown to the user. #define
LDB_CONTROL_REVEAL_INTERNALS_NAME 'reveal_internals'
#define LDB_CONTROL_AS_SYSTEM_OID '1.3.6.1.4.1.7165.4.3.7'
LDB_CONTROL_AS_SYSTEM is used to skip access checks on operations that are
performed by the system, but with a user's credentials, e.g. #define
LDB_CONTROL_PROVISION_OID '1.3.6.1.4.1.7165.4.3.16'
LDB_CONTROL_PROVISION_OID is used to skip some constraint checks. #define
LDB_CONTROL_PROVISION_NAME 'provision'
#define LDB_CONTROL_PAGED_RESULTS_OID '1.2.840.113556.1.4.319'
OID for the paged results control. #define
LDB_CONTROL_PAGED_RESULTS_NAME 'paged_results'
#define LDB_CONTROL_SD_FLAGS_OID '1.2.840.113556.1.4.801'
OID for specifying the returned elements of the ntSecurityDescriptor. #define
LDB_CONTROL_SD_FLAGS_NAME 'sd_flags'
#define LDB_CONTROL_DOMAIN_SCOPE_OID '1.2.840.113556.1.4.1339'
OID for specifying an advanced scope for the search (one partition) #define
LDB_CONTROL_DOMAIN_SCOPE_NAME 'domain_scope'
#define LDB_CONTROL_SEARCH_OPTIONS_OID '1.2.840.113556.1.4.1340'
OID for specifying an advanced scope for a search. #define
LDB_CONTROL_SEARCH_OPTIONS_NAME 'search_options'
#define LDB_CONTROL_NOTIFICATION_OID '1.2.840.113556.1.4.528'
OID for notification. #define LDB_CONTROL_NOTIFICATION_NAME
'notification'
#define LDB_CONTROL_TREE_DELETE_OID '1.2.840.113556.1.4.805'
OID for performing subtree deletes. #define
LDB_CONTROL_TREE_DELETE_NAME 'tree_delete'
#define LDB_CONTROL_SHOW_DELETED_OID '1.2.840.113556.1.4.417'
OID for getting deleted objects. #define LDB_CONTROL_SHOW_DELETED_NAME
'show_deleted'
#define LDB_CONTROL_SHOW_RECYCLED_OID '1.2.840.113556.1.4.2064'
OID for getting recycled objects. #define
LDB_CONTROL_SHOW_RECYCLED_NAME 'show_recycled'
#define LDB_CONTROL_SHOW_DEACTIVATED_LINK_OID '1.2.840.113556.1.4.2065'
OID for getting deactivated linked attributes. #define
LDB_CONTROL_SHOW_DEACTIVATED_LINK_NAME 'show_deactivated_link'
#define LDB_CONTROL_EXTENDED_DN_OID '1.2.840.113556.1.4.529'
OID for extended DN. #define LDB_CONTROL_EXTENDED_DN_NAME 'extended_dn'
#define LDB_CONTROL_SERVER_SORT_OID '1.2.840.113556.1.4.473'
OID for LDAP server sort result extension. #define
LDB_CONTROL_SERVER_SORT_NAME 'server_sort'
#define LDB_CONTROL_SORT_RESP_OID '1.2.840.113556.1.4.474'
OID for LDAP server sort result response extension. #define
LDB_CONTROL_SORT_RESP_NAME 'server_sort_resp'
#define LDB_CONTROL_ASQ_OID '1.2.840.113556.1.4.1504'
OID for LDAP Attribute Scoped Query extension. #define
LDB_CONTROL_ASQ_NAME 'asq'
#define LDB_CONTROL_DIRSYNC_OID '1.2.840.113556.1.4.841'
OID for LDAP Directory Sync extension. #define LDB_CONTROL_DIRSYNC_NAME
'dirsync'
#define LDB_CONTROL_DIRSYNC_EX_OID '1.2.840.113556.1.4.2090'
#define LDB_CONTROL_DIRSYNC_EX_NAME 'dirsync_ex'
#define LDB_CONTROL_VLV_REQ_OID '2.16.840.1.113730.3.4.9'
OID for LDAP Virtual List View Request extension. #define
LDB_CONTROL_VLV_REQ_NAME 'vlv'
#define LDB_CONTROL_VLV_RESP_OID '2.16.840.1.113730.3.4.10'
OID for LDAP Virtual List View Response extension. #define
LDB_CONTROL_VLV_RESP_NAME 'vlv_resp'
#define LDB_CONTROL_PERMISSIVE_MODIFY_OID '1.2.840.113556.1.4.1413'
OID to let modifies don't give an error when adding an existing attribute with
the same value or deleting an nonexisting one attribute. #define
LDB_CONTROL_PERMISSIVE_MODIFY_NAME 'permissive_modify'
#define LDB_CONTROL_SERVER_LAZY_COMMIT '1.2.840.113556.1.4.619'
OID to allow the server to be more 'fast and loose' with the data being added.
#define LDB_CONTROL_RODC_DCPROMO_OID '1.2.840.113556.1.4.1341'
Control for RODC join -see [MS-ADTS] section 3.1.1.3.4.1.23. #define
LDB_CONTROL_RODC_DCPROMO_NAME 'rodc_join'
#define LDB_CONTROL_RELAX_OID '1.3.6.1.4.1.4203.666.5.12'
OID for the allowing client to request temporary relaxed enforcement of
constraints of the x.500 model. #define LDB_CONTROL_RELAX_NAME
'relax'
#define LDB_CONTROL_VERIFY_NAME_OID '1.2.840.113556.1.4.1338'
OID for the allowing some kind of relax check for attributes with DNs. #define
LDB_CONTROL_VERIFY_NAME_NAME 'verify_name'
#define LDB_EXTENDED_SEQUENCE_NUMBER '1.3.6.1.4.1.7165.4.4.3'
OID for LDAP Extended Operation SEQUENCE_NUMBER. #define
LDB_EXTENDED_PASSWORD_CHANGE_OID '1.3.6.1.4.1.4203.1.11.1'
OID for LDAP Extended Operation PASSWORD_CHANGE. #define
LDB_EXTENDED_FAST_BIND_OID '1.2.840.113556.1.4.1781'
OID for LDAP Extended Operation FAST_BIND. #define
LDB_EXTENDED_START_TLS_OID '1.3.6.1.4.1.1466.20037'
OID for LDAP Extended Operation START_TLS. #define
LDB_EXTENDED_DYNAMIC_OID '1.3.6.1.4.1.1466.101.119.1'
OID for LDAP Extended Operation DYNAMIC_REFRESH. #define
LDB_EXTENDED_WHOAMI_OID '1.3.6.1.4.1.4203.1.11.3'
OID for RFC4532 'Who Am I' extended operation. #define
LDB_SEARCH_OPTION_DOMAIN_SCOPE 0x00000001
#define LDB_SEARCH_OPTION_PHANTOM_ROOT 0x00000002
#define LDB_SEQ_GLOBAL_SEQUENCE 0x01
#define LDB_SEQ_TIMESTAMP_SEQUENCE 0x02
#define ldb_attr_cmp(a, b) strcasecmp(a, b)
Compare two attributes. #define discard_const(ptr) ((void
*)((uintptr_t)(ptr)))
#define LDB_TYPESAFE_QSORT(base, numel, opaque, comparison)
#define TYPESAFE_QSORT(base, numel, comparison)
#define LDB_REQ_SET_LOCATION(req) ldb_req_set_location(req,
__location__)
Typedefs¶
typedef int(* ldb_attr_handler_t) (struct
ldb_context *, TALLOC_CTX *mem_ctx, const struct ldb_val *,
struct ldb_val *)
typedef int(* ldb_attr_comparison_t) (struct ldb_context *,
TALLOC_CTX *mem_ctx, const struct ldb_val *, const struct
ldb_val *)
typedef int(* ldb_attr_operator_t) (struct ldb_context *, enum
ldb_parse_op operation, const struct ldb_schema_attribute *a, const
struct ldb_val *, const struct ldb_val *, bool *matched)
typedef int(* ldb_qsort_cmp_fn_t) (void *v1, void *v2, void *opaque)
typedef int(* ldb_request_callback_t) (struct ldb_request *,
struct ldb_reply *)
Enumerations¶
enum ldb_changetype { LDB_CHANGETYPE_NONE =0,
LDB_CHANGETYPE_ADD, LDB_CHANGETYPE_DELETE,
LDB_CHANGETYPE_MODIFY, LDB_CHANGETYPE_MODRDN }
enum ldb_scope { LDB_SCOPE_DEFAULT =-1, LDB_SCOPE_BASE
=0, LDB_SCOPE_ONELEVEL =1, LDB_SCOPE_SUBTREE =2 }
enum ldb_debug_level { LDB_DEBUG_FATAL, LDB_DEBUG_ERROR,
LDB_DEBUG_WARNING, LDB_DEBUG_TRACE }
enum ldb_parse_op { LDB_OP_AND =1, LDB_OP_OR =2,
LDB_OP_NOT =3, LDB_OP_EQUALITY =4, LDB_OP_SUBSTRING =5,
LDB_OP_GREATER =6, LDB_OP_LESS =7, LDB_OP_PRESENT =8,
LDB_OP_APPROX =9, LDB_OP_EXTENDED =10 }
enum ldb_request_type { LDB_SEARCH, LDB_ADD,
LDB_MODIFY, LDB_DELETE, LDB_RENAME,
LDB_EXTENDED, LDB_REQ_REGISTER_CONTROL,
LDB_REQ_REGISTER_PARTITION }
enum ldb_reply_type { LDB_REPLY_ENTRY,
LDB_REPLY_REFERRAL, LDB_REPLY_DONE }
enum ldb_wait_type { LDB_WAIT_ALL, LDB_WAIT_NONE }
enum ldb_state { LDB_ASYNC_INIT, LDB_ASYNC_PENDING,
LDB_ASYNC_DONE }
enum ldb_sequence_type { LDB_SEQ_HIGHEST_SEQ,
LDB_SEQ_HIGHEST_TIMESTAMP, LDB_SEQ_NEXT }
Functions¶
struct ldb_parse_tree * ldb_parse_tree (TALLOC_CTX
*mem_ctx, const char *s)
char * ldb_filter_from_tree (TALLOC_CTX *mem_ctx, const struct
ldb_parse_tree *tree)
char * ldb_binary_encode (TALLOC_CTX *mem_ctx, struct ldb_val
val)
Encode a binary blob. char * ldb_binary_encode_string (TALLOC_CTX
*mem_ctx, const char *string)
Encode a string. const struct ldb_schema_attribute *
ldb_schema_attribute_by_name (struct ldb_context *ldb, const
char *name)
const struct ldb_dn_extended_syntax *
ldb_dn_extended_syntax_by_name (struct ldb_context *ldb, const
char *name)
int ldb_request (struct ldb_context *ldb, struct
ldb_request *request)
int ldb_request_done (struct ldb_request *req, int status)
bool ldb_request_is_done (struct ldb_request *req)
int ldb_modules_wait (struct ldb_handle *handle)
int ldb_wait (struct ldb_handle *handle, enum ldb_wait_type
type)
int ldb_set_timeout (struct ldb_context *ldb, struct
ldb_request *req, int timeout)
int ldb_set_timeout_from_prev_req (struct ldb_context *ldb,
struct ldb_request *oldreq, struct ldb_request *newreq)
void ldb_set_create_perms (struct ldb_context *ldb, unsigned int
perms)
void ldb_set_modules_dir (struct ldb_context *ldb, const char
*path)
void ldb_set_event_context (struct ldb_context *ldb, struct
tevent_context *ev)
struct tevent_context * ldb_get_event_context (struct
ldb_context *ldb)
int ldb_global_init (void)
Initialise ldbs' global information. struct ldb_context *
ldb_init (TALLOC_CTX *mem_ctx, struct tevent_context *ev_ctx)
Initialise an ldb context. int ldb_connect (struct ldb_context
*ldb, const char *url, unsigned int flags, const char *options[])
Connect to a database. struct ldb_dn * ldb_get_root_basedn (struct
ldb_context *ldb)
struct ldb_dn * ldb_get_config_basedn (struct ldb_context *ldb)
struct ldb_dn * ldb_get_schema_basedn (struct ldb_context *ldb)
struct ldb_dn * ldb_get_default_basedn (struct ldb_context *ldb)
int ldb_search_default_callback (struct ldb_request *req, struct
ldb_reply *ares)
The default async search callback function. int ldb_op_default_callback
(struct ldb_request *req, struct ldb_reply *ares)
The default async extended operation callback function. int
ldb_modify_default_callback (struct ldb_request *req, struct
ldb_reply *ares)
int ldb_build_search_req (struct ldb_request **ret_req, struct
ldb_context *ldb, TALLOC_CTX *mem_ctx, struct ldb_dn *base, enum
ldb_scope scope, const char *expression, const char *const *attrs, struct
ldb_control **controls, void *context, ldb_request_callback_t
callback, struct ldb_request *parent)
Helper function to build a search request. int ldb_build_search_req_ex
(struct ldb_request **ret_req, struct ldb_context *ldb,
TALLOC_CTX *mem_ctx, struct ldb_dn *base, enum ldb_scope scope, struct
ldb_parse_tree *tree, const char *const *attrs, struct
ldb_control **controls, void *context, ldb_request_callback_t
callback, struct ldb_request *parent)
int ldb_build_add_req (struct ldb_request **ret_req, struct
ldb_context *ldb, TALLOC_CTX *mem_ctx, const struct
ldb_message *message, struct ldb_control **controls, void
*context, ldb_request_callback_t callback, struct ldb_request
*parent)
Helper function to build an add request. int ldb_build_mod_req (struct
ldb_request **ret_req, struct ldb_context *ldb, TALLOC_CTX
*mem_ctx, const struct ldb_message *message, struct
ldb_control **controls, void *context, ldb_request_callback_t
callback, struct ldb_request *parent)
Helper function to build a modify request. int ldb_build_del_req
(struct ldb_request **ret_req, struct ldb_context *ldb,
TALLOC_CTX *mem_ctx, struct ldb_dn *dn, struct ldb_control
**controls, void *context, ldb_request_callback_t callback, struct
ldb_request *parent)
Helper function to build a delete request. int ldb_build_rename_req
(struct ldb_request **ret_req, struct ldb_context *ldb,
TALLOC_CTX *mem_ctx, struct ldb_dn *olddn, struct ldb_dn *newdn, struct
ldb_control **controls, void *context, ldb_request_callback_t
callback, struct ldb_request *parent)
Helper function to build a rename request. int ldb_request_add_control
(struct ldb_request *req, const char *oid, bool critical, void *data)
Add a ldb_control to a ldb_request. int
ldb_request_replace_control (struct ldb_request *req, const
char *oid, bool critical, void *data)
replace a ldb_control in a ldb_request struct ldb_control
* ldb_request_get_control (struct ldb_request *req, const char
*oid)
check if a control with the specified 'oid' exist and return it struct
ldb_control * ldb_reply_get_control (struct ldb_reply
*rep, const char *oid)
check if a control with the specified 'oid' exist and return it int
ldb_search (struct ldb_context *ldb, TALLOC_CTX *mem_ctx,
struct ldb_result **result, struct ldb_dn *base, enum ldb_scope
scope, const char *const *attrs, const char *exp_fmt,...) PRINTF_ATTRIBUTE(7
Search the database. int int ldb_add (struct ldb_context *ldb,
const struct ldb_message *message)
Add a record to the database. int ldb_modify (struct ldb_context
*ldb, const struct ldb_message *message)
Modify the specified attributes of a record. int ldb_rename (struct
ldb_context *ldb, struct ldb_dn *olddn, struct ldb_dn *newdn)
Rename a record in the database. int ldb_delete (struct
ldb_context *ldb, struct ldb_dn *dn)
Delete a record from the database. int ldb_extended_default_callback
(struct ldb_request *req, struct ldb_reply *ares)
The default async extended operation callback function. int
ldb_build_extended_req (struct ldb_request **ret_req, struct
ldb_context *ldb, TALLOC_CTX *mem_ctx, const char *oid, void *data,
struct ldb_control **controls, void *context, ldb_request_callback_t
callback, struct ldb_request *parent)
Helper function to build a extended request. int ldb_extended (struct
ldb_context *ldb, const char *oid, void *data, struct
ldb_result **res)
call an extended operation int ldb_sequence_number (struct
ldb_context *ldb, enum ldb_sequence_type type, uint64_t *seq_num)
Obtain current/next database sequence number. int ldb_transaction_start
(struct ldb_context *ldb)
start a transaction int ldb_transaction_prepare_commit (struct
ldb_context *ldb)
first phase of two phase commit int ldb_transaction_commit (struct
ldb_context *ldb)
commit a transaction int ldb_transaction_cancel (struct
ldb_context *ldb)
cancel a transaction int ldb_transaction_cancel_noerr (struct
ldb_context *ldb)
const char * ldb_errstring (struct ldb_context *ldb)
return extended error information from the last call const char *
ldb_strerror (int ldb_err)
return a string explaining what a ldb error constant means void
ldb_set_utf8_default (struct ldb_context *ldb)
setup the default utf8 functions FIXME: these functions do not yet handle utf8
char * ldb_casefold (struct ldb_context *ldb, TALLOC_CTX
*mem_ctx, const char *s, size_t n)
Casefold a string. int ldb_valid_attr_name (const char *s)
Check the attribute name is valid according to rfc2251. int
ldb_ldif_write (struct ldb_context *ldb, int(*fprintf_fn)(void
*, const char *,...) PRINTF_ATTRIBUTE(2, 3), void *private_data, const
struct ldb_ldif *ldif)
Write an LDIF message. void ldb_ldif_read_free (struct
ldb_context *ldb, struct ldb_ldif *msg)
Clean up an LDIF message. struct ldb_ldif * ldb_ldif_read
(struct ldb_context *ldb, int(*fgetc_fn)(void *), void *private_data)
Read an LDIF message. struct ldb_ldif * ldb_ldif_read_file
(struct ldb_context *ldb, FILE *f)
Read an LDIF message from a file. struct ldb_ldif *
ldb_ldif_read_string (struct ldb_context *ldb, const char **s)
Read an LDIF message from a string. int ldb_ldif_parse_modrdn (struct
ldb_context *ldb, const struct ldb_ldif *ldif, TALLOC_CTX
*mem_ctx, struct ldb_dn **olddn, struct ldb_dn **newrdn, bool *deleteoldrdn,
struct ldb_dn **newsuperior, struct ldb_dn **newdn)
Parse a modrdn LDIF message from a struct ldb_message. int
ldb_ldif_write_file (struct ldb_context *ldb, FILE *f, const
struct ldb_ldif *msg)
Write an LDIF message to a file. char * ldb_ldif_write_string (struct
ldb_context *ldb, TALLOC_CTX *mem_ctx, const struct ldb_ldif
*msg)
Write an LDIF message to a string. char * ldb_ldif_message_string
(struct ldb_context *ldb, TALLOC_CTX *mem_ctx, enum ldb_changetype
changetype, const struct ldb_message *msg)
Write an LDB message to a string. char *
ldb_ldif_message_redacted_string (struct ldb_context *ldb,
TALLOC_CTX *mem_ctx, enum ldb_changetype changetype, const struct
ldb_message *msg)
Write an LDB message to a string. char * ldb_base64_encode (TALLOC_CTX
*mem_ctx, const char *buf, int len)
Base64 encode a buffer. int ldb_base64_decode (char *s)
Base64 decode a buffer. const char * ldb_dn_get_linearized (struct
ldb_dn *dn)
Get the linear form of a DN (without any extended components) char *
ldb_dn_alloc_linearized (TALLOC_CTX *mem_ctx, struct ldb_dn *dn)
Allocate a copy of the linear form of a DN (without any extended components)
onto the supplied memory context. char *
ldb_dn_get_extended_linearized (TALLOC_CTX *mem_ctx, struct ldb_dn
*dn, int mode)
Get the linear form of a DN (with any extended components) const struct
ldb_val * ldb_dn_get_extended_component (struct ldb_dn *dn,
const char *name)
int ldb_dn_set_extended_component (struct ldb_dn *dn, const char *name,
const struct ldb_val *val)
void ldb_dn_extended_filter (struct ldb_dn *dn, const char *const
*accept_list)
void ldb_dn_remove_extended_components (struct ldb_dn *dn)
bool ldb_dn_has_extended (struct ldb_dn *dn)
int ldb_dn_extended_add_syntax (struct ldb_context *ldb,
unsigned flags, const struct ldb_dn_extended_syntax *syntax)
struct ldb_dn * ldb_dn_new (TALLOC_CTX *mem_ctx, struct
ldb_context *ldb, const char *dn)
Allocate a new DN from a string. struct ldb_dn * ldb_dn_new_fmt
(TALLOC_CTX *mem_ctx, struct ldb_context *ldb, const char
*new_fmt,...) PRINTF_ATTRIBUTE(3
Allocate a new DN from a printf style format string and arguments. struct
ldb_dn struct ldb_dn * ldb_dn_from_ldb_val (TALLOC_CTX *mem_ctx,
struct ldb_context *ldb, const struct ldb_val *strdn)
Allocate a new DN from a struct ldb_val (useful to avoid buffer
overrun) bool ldb_dn_validate (struct ldb_dn *dn)
Determine if this DN is syntactically valid. char * ldb_dn_escape_value
(TALLOC_CTX *mem_ctx, struct ldb_val value)
const char * ldb_dn_get_casefold (struct ldb_dn *dn)
char * ldb_dn_alloc_casefold (TALLOC_CTX *mem_ctx, struct ldb_dn *dn)
int ldb_dn_compare_base (struct ldb_dn *base, struct ldb_dn *dn)
int ldb_dn_compare (struct ldb_dn *edn0, struct ldb_dn *edn1)
bool ldb_dn_add_base (struct ldb_dn *dn, struct ldb_dn *base)
bool ldb_dn_add_base_fmt (struct ldb_dn *dn, const char *base_fmt,...)
PRINTF_ATTRIBUTE(2
bool bool ldb_dn_add_child (struct ldb_dn *dn, struct ldb_dn *child)
bool ldb_dn_add_child_fmt (struct ldb_dn *dn, const char
*child_fmt,...) PRINTF_ATTRIBUTE(2
bool bool ldb_dn_remove_base_components (struct ldb_dn *dn, unsigned
int num)
bool ldb_dn_remove_child_components (struct ldb_dn *dn, unsigned int
num)
bool ldb_dn_add_child_val (struct ldb_dn *dn, const char *rdn, struct
ldb_val value)
struct ldb_dn * ldb_dn_copy (TALLOC_CTX *mem_ctx, struct ldb_dn *dn)
struct ldb_dn * ldb_dn_get_parent (TALLOC_CTX *mem_ctx, struct ldb_dn
*dn)
char * ldb_dn_canonical_string (TALLOC_CTX *mem_ctx, struct ldb_dn *dn)
char * ldb_dn_canonical_ex_string (TALLOC_CTX *mem_ctx, struct ldb_dn
*dn)
int ldb_dn_get_comp_num (struct ldb_dn *dn)
int ldb_dn_get_extended_comp_num (struct ldb_dn *dn)
const char * ldb_dn_get_component_name (struct ldb_dn *dn, unsigned int
num)
const struct ldb_val * ldb_dn_get_component_val (struct ldb_dn
*dn, unsigned int num)
const char * ldb_dn_get_rdn_name (struct ldb_dn *dn)
const struct ldb_val * ldb_dn_get_rdn_val (struct ldb_dn *dn)
int ldb_dn_set_component (struct ldb_dn *dn, int num, const char *name,
const struct ldb_val val)
bool ldb_dn_is_valid (struct ldb_dn *dn)
bool ldb_dn_is_special (struct ldb_dn *dn)
bool ldb_dn_check_special (struct ldb_dn *dn, const char *check)
bool ldb_dn_is_null (struct ldb_dn *dn)
int ldb_dn_update_components (struct ldb_dn *dn, const struct ldb_dn
*ref_dn)
char * ldb_attr_casefold (TALLOC_CTX *mem_ctx, const char *s)
int ldb_attr_dn (const char *attr)
struct ldb_message * ldb_msg_new (TALLOC_CTX *mem_ctx)
Create an empty message. struct ldb_message_element *
ldb_msg_find_element (const struct ldb_message *msg, const
char *attr_name)
Find an element within an message. int ldb_val_equal_exact (const
struct ldb_val *v1, const struct ldb_val *v2)
Compare two ldb_val values. struct ldb_val *
ldb_msg_find_val (const struct ldb_message_element *el, struct
ldb_val *val)
find a value within an ldb_message_element int ldb_msg_add_empty
(struct ldb_message *msg, const char *attr_name, int flags, struct
ldb_message_element **return_el)
add a new empty element to a ldb_message int
ldb_msg_element_add_value (TALLOC_CTX *mem_ctx, struct
ldb_message_element *el, const struct ldb_val *val)
add a value to a message element int ldb_msg_add (struct
ldb_message *msg, const struct ldb_message_element *el, int
flags)
add a element to a ldb_message int ldb_msg_add_value (struct
ldb_message *msg, const char *attr_name, const struct ldb_val
*val, struct ldb_message_element **return_el)
int ldb_msg_add_steal_value (struct ldb_message *msg, const char
*attr_name, struct ldb_val *val)
int ldb_msg_add_steal_string (struct ldb_message *msg, const
char *attr_name, char *str)
int ldb_msg_add_string_flags (struct ldb_message *msg, const
char *attr_name, const char *str, int flags)
int ldb_msg_add_string (struct ldb_message *msg, const char
*attr_name, const char *str)
int ldb_msg_add_linearized_dn (struct ldb_message *msg, const
char *attr_name, struct ldb_dn *dn)
int ldb_msg_add_fmt (struct ldb_message *msg, const char
*attr_name, const char *fmt,...) PRINTF_ATTRIBUTE(3
int int ldb_msg_append_value (struct ldb_message *msg, const
char *attr_name, const struct ldb_val *val, int flags)
append a element to a ldb_message int ldb_msg_append_steal_value
(struct ldb_message *msg, const char *attr_name, struct
ldb_val *val, int flags)
int ldb_msg_append_steal_string (struct ldb_message *msg, const
char *attr_name, char *str, int flags)
int ldb_msg_append_string (struct ldb_message *msg, const char
*attr_name, const char *str, int flags)
int ldb_msg_append_linearized_dn (struct ldb_message *msg, const
char *attr_name, struct ldb_dn *dn, int flags)
int ldb_msg_append_fmt (struct ldb_message *msg, int flags,
const char *attr_name, const char *fmt,...) PRINTF_ATTRIBUTE(4
int int ldb_msg_element_compare (struct ldb_message_element
*el1, struct ldb_message_element *el2)
compare two message elements - return 0 on match int
ldb_msg_element_compare_name (struct ldb_message_element *el1,
struct ldb_message_element *el2)
const struct ldb_val * ldb_msg_find_ldb_val (const struct
ldb_message *msg, const char *attr_name)
Find elements in a message. int ldb_msg_find_attr_as_int (const struct
ldb_message *msg, const char *attr_name, int default_value)
unsigned int ldb_msg_find_attr_as_uint (const struct ldb_message
*msg, const char *attr_name, unsigned int default_value)
int64_t ldb_msg_find_attr_as_int64 (const struct ldb_message
*msg, const char *attr_name, int64_t default_value)
uint64_t ldb_msg_find_attr_as_uint64 (const struct ldb_message
*msg, const char *attr_name, uint64_t default_value)
double ldb_msg_find_attr_as_double (const struct ldb_message
*msg, const char *attr_name, double default_value)
int ldb_msg_find_attr_as_bool (const struct ldb_message *msg,
const char *attr_name, int default_value)
const char * ldb_msg_find_attr_as_string (const struct
ldb_message *msg, const char *attr_name, const char *default_value)
struct ldb_dn * ldb_msg_find_attr_as_dn (struct ldb_context
*ldb, TALLOC_CTX *mem_ctx, const struct ldb_message *msg, const char
*attr_name)
void ldb_msg_sort_elements (struct ldb_message *msg)
struct ldb_message * ldb_msg_copy_shallow (TALLOC_CTX *mem_ctx,
const struct ldb_message *msg)
struct ldb_message * ldb_msg_copy (TALLOC_CTX *mem_ctx, const
struct ldb_message *msg)
struct ldb_message * ldb_msg_canonicalize (struct
ldb_context *ldb, const struct ldb_message *msg) _DEPRECATED_
int ldb_msg_normalize (struct ldb_context *ldb, TALLOC_CTX
*mem_ctx, const struct ldb_message *msg, struct ldb_message
**_msg_out)
struct ldb_message * ldb_msg_diff (struct ldb_context
*ldb, struct ldb_message *msg1, struct ldb_message *msg2)
_DEPRECATED_
int ldb_msg_difference (struct ldb_context *ldb, TALLOC_CTX
*mem_ctx, struct ldb_message *msg1, struct ldb_message *msg2,
struct ldb_message **_msg_out)
return a ldb_message representing the differences between msg1 and
msg2. int ldb_msg_check_string_attribute (const struct
ldb_message *msg, const char *name, const char *value)
Tries to find a certain string attribute in a message. int
ldb_msg_sanity_check (struct ldb_context *ldb, const struct
ldb_message *msg)
Integrity check an ldb_message. struct ldb_val
ldb_val_dup (TALLOC_CTX *mem_ctx, const struct ldb_val *v)
Duplicate an ldb_val structure. int ldb_set_debug (struct
ldb_context *ldb, void(*debug)(void *context, enum ldb_debug_level
level, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(3, 0), void *context)
this allows the user to set a debug function for error reporting void
ldb_set_utf8_fns (struct ldb_context *ldb, void *context, char
*(*casefold)(void *, void *, const char *, size_t n))
this allows the user to set custom utf8 function for error reporting. int
ldb_set_debug_stderr (struct ldb_context *ldb)
this sets up debug to print messages on stderr int ldb_set_opaque
(struct ldb_context *ldb, const char *name, void *value)
void * ldb_get_opaque (struct ldb_context *ldb, const char
*name)
const char ** ldb_attr_list_copy (TALLOC_CTX *mem_ctx, const char
*const *attrs)
const char ** ldb_attr_list_copy_add (TALLOC_CTX *mem_ctx, const char
*const *attrs, const char *new_attr)
int ldb_attr_in_list (const char *const *attrs, const char *attr)
int ldb_msg_rename_attr (struct ldb_message *msg, const char
*attr, const char *replace)
int ldb_msg_copy_attr (struct ldb_message *msg, const char
*attr, const char *replace)
void ldb_msg_remove_attr (struct ldb_message *msg, const char
*attr)
void ldb_msg_remove_element (struct ldb_message *msg, struct
ldb_message_element *el)
void ldb_parse_tree_attr_replace (struct ldb_parse_tree *tree,
const char *attr, const char *replace)
struct ldb_parse_tree * ldb_parse_tree_copy_shallow (TALLOC_CTX
*mem_ctx, const struct ldb_parse_tree *ot)
char * ldb_timestring (TALLOC_CTX *mem_ctx, time_t t)
Convert a time structure to a string. time_t ldb_string_to_time (const
char *s)
Convert a string to a time structure. int ldb_val_to_time (const struct
ldb_val *v, time_t *t)
convert a LDAP GeneralizedTime string in ldb_val format to a time_t.
char * ldb_timestring_utc (TALLOC_CTX *mem_ctx, time_t t)
Convert a time structure to a string. time_t ldb_string_utc_to_time
(const char *s)
Convert a string to a time structure. void ldb_qsort (void *const
pbase, size_t total_elems, size_t size, void *opaque, ldb_qsort_cmp_fn_t
cmp)
char * ldb_control_to_string (TALLOC_CTX *mem_ctx, const struct
ldb_control *control)
Convert a control into its string representation. struct ldb_control *
ldb_parse_control_from_string (struct ldb_context *ldb,
TALLOC_CTX *mem_ctx, const char *control_strings)
Convert a string representing a control into a ldb_control structure.
struct ldb_control ** ldb_parse_control_strings (struct
ldb_context *ldb, TALLOC_CTX *mem_ctx, const char **control_strings)
Convert an array of string representation of a control into an array of
ldb_control structures. unsigned int ldb_get_flags (struct
ldb_context *ldb)
return the ldb flags void ldb_set_flags (struct ldb_context
*ldb, unsigned flags)
struct ldb_dn * ldb_dn_binary_from_ldb_val (TALLOC_CTX *mem_ctx, struct
ldb_context *ldb, const struct ldb_val *strdn)
int ldb_dn_get_binary (struct ldb_dn *dn, struct ldb_val *val)
int ldb_dn_set_binary (struct ldb_dn *dn, struct ldb_val *val)
void ldb_req_set_location (struct ldb_request *req, const char
*location)
const char * ldb_req_location (struct ldb_request *req)
bool ldb_dn_minimise (struct ldb_dn *dn)
int ldb_val_string_cmp (const struct ldb_val *v, const char
*str)
Detailed Description¶
Samba's ldb database.
This header file provides the main API for ldb.
Macro Definition Documentation¶
#define ldb_attr_cmp(a, b) strcasecmp(a, b)¶
Compare two attributes. This function compares to attribute names. Note that this is a case-insensitive comparison.
Parameters
b the second attribute name to compare
Returns
attribute names are restricted by rfc2251 so using strcasecmp and toupper here is ok. return 0 for match
#define LDB_ATTR_FLAG_FIXED (1<<2)¶
The attribute is supplied by the application and should not be removed.
#define LDB_ATTR_FLAG_HIDDEN (1<<0)¶
The attribute is not returned by default.
#define LDB_CONTROL_AS_SYSTEM_OID '1.3.6.1.4.1.7165.4.3.7'¶
LDB_CONTROL_AS_SYSTEM is used to skip access checks on operations that are performed by the system, but with a user's credentials, e.g. updating prefix map
#define LDB_CONTROL_ASQ_OID '1.2.840.113556.1.4.1504'¶
OID for LDAP Attribute Scoped Query extension. This control is included in SearchRequest or SearchResponse messages as part of the controls field of the LDAPMessage.
#define LDB_CONTROL_BYPASS_OPERATIONAL_OID '1.3.6.1.4.1.7165.4.3.13'¶
OID for getting and manipulating attributes from the ldb without interception in the operational module. It can be used to access attribute that used to be stored in the sam and that are now calculated.
#define LDB_CONTROL_DIRSYNC_OID '1.2.840.113556.1.4.841'¶
OID for LDAP Directory Sync extension. This control is included in SearchRequest or SearchResponse messages as part of the controls field of the LDAPMessage.
#define LDB_CONTROL_DOMAIN_SCOPE_OID '1.2.840.113556.1.4.1339'¶
OID for specifying an advanced scope for the search (one partition)
See also
#define LDB_CONTROL_EXTENDED_DN_OID '1.2.840.113556.1.4.529'¶
OID for extended DN.
See also
#define LDB_CONTROL_NOTIFICATION_OID '1.2.840.113556.1.4.528'¶
OID for notification.
See also
#define LDB_CONTROL_PAGED_RESULTS_OID '1.2.840.113556.1.4.319'¶
OID for the paged results control. This control is included in the searchRequest and searchResultDone messages as part of the controls field of the LDAPMessage, as defined in Section 4.1.12 of LDAP v3.
See also
#define LDB_CONTROL_PERMISSIVE_MODIFY_OID '1.2.840.113556.1.4.1413'¶
OID to let modifies don't give an error when adding an existing attribute with the same value or deleting an nonexisting one attribute.
See also
#define LDB_CONTROL_PROVISION_OID '1.3.6.1.4.1.7165.4.3.16'¶
LDB_CONTROL_PROVISION_OID is used to skip some constraint checks. It's is mainly thought to be used for the provisioning.
#define LDB_CONTROL_RECALCULATE_RDN_OID '1.3.6.1.4.1.7165.4.3.30'¶
OID for recalculate RDN (rdn attribute and 'name') control. This control forces the rdn_name module to the recalculate the rdn and name attributes as if the object was just created.
#define LDB_CONTROL_RECALCULATE_SD_OID '1.3.6.1.4.1.7165.4.3.5'¶
OID for recalculate SD control. This control force the dsdb code to recalculate the SD of the object as if the object was just created.
#define LDB_CONTROL_RELAX_OID '1.3.6.1.4.1.4203.666.5.12'¶
OID for the allowing client to request temporary relaxed enforcement of constraints of the x.500 model. Mainly used for the OpenLDAP backend.
See also
#define LDB_CONTROL_REVEAL_INTERNALS '1.3.6.1.4.1.7165.4.3.6'¶
REVEAL_INTERNALS is used to reveal internal attributes and DN components which are not normally shown to the user.
#define LDB_CONTROL_RODC_DCPROMO_OID '1.2.840.113556.1.4.1341'¶
Control for RODC join -see [MS-ADTS] section 3.1.1.3.4.1.23.
See also
#define LDB_CONTROL_SD_FLAGS_OID '1.2.840.113556.1.4.801'¶
OID for specifying the returned elements of the ntSecurityDescriptor.
See also
#define LDB_CONTROL_SEARCH_OPTIONS_OID '1.2.840.113556.1.4.1340'¶
OID for specifying an advanced scope for a search.
See also
#define LDB_CONTROL_SERVER_LAZY_COMMIT '1.2.840.113556.1.4.619'¶
OID to allow the server to be more 'fast and loose' with the data being added.
See also
#define LDB_CONTROL_SERVER_SORT_OID '1.2.840.113556.1.4.473'¶
OID for LDAP server sort result extension. This control is included in the searchRequest message as part of the controls field of the LDAPMessage, as defined in Section 4.1.12 of LDAP v3. The controlType is set to '1.2.840.113556.1.4.473'. The criticality MAY be either TRUE or FALSE (where absent is also equivalent to FALSE) at the client's option.
See also
#define LDB_CONTROL_SHOW_DEACTIVATED_LINK_OID '1.2.840.113556.1.4.2065'¶
OID for getting deactivated linked attributes.
See also
#define LDB_CONTROL_SHOW_DELETED_OID '1.2.840.113556.1.4.417'¶
OID for getting deleted objects.
See also
#define LDB_CONTROL_SHOW_RECYCLED_OID '1.2.840.113556.1.4.2064'¶
OID for getting recycled objects.
See also
#define LDB_CONTROL_SORT_RESP_OID '1.2.840.113556.1.4.474'¶
OID for LDAP server sort result response extension. This control is included in the searchResultDone message as part of the controls field of the LDAPMessage, as defined in Section 4.1.12 of LDAP v3.
See also
#define LDB_CONTROL_TREE_DELETE_OID '1.2.840.113556.1.4.805'¶
OID for performing subtree deletes.
See also
#define LDB_CONTROL_VERIFY_NAME_OID '1.2.840.113556.1.4.1338'¶
OID for the allowing some kind of relax check for attributes with DNs.
See also
#define LDB_CONTROL_VLV_REQ_OID '2.16.840.1.113730.3.4.9'¶
OID for LDAP Virtual List View Request extension. This control is included in SearchRequest messages as part of the controls field of the LDAPMessage.
#define LDB_CONTROL_VLV_RESP_OID '2.16.840.1.113730.3.4.10'¶
OID for LDAP Virtual List View Response extension. This control is included in SearchResponse messages as part of the controls field of the LDAPMessage.
#define LDB_EXTENDED_DYNAMIC_OID '1.3.6.1.4.1.1466.101.119.1'¶
OID for LDAP Extended Operation DYNAMIC_REFRESH. This Extended operation is used to create and maintain objects which exist only a specific time, e.g. when a certain client or a certain person is logged in. Data refreshes have to be periodically sent in a specific interval. Otherwise the entry is going to be removed.
#define LDB_EXTENDED_FAST_BIND_OID '1.2.840.113556.1.4.1781'¶
OID for LDAP Extended Operation FAST_BIND. This Extended operations is used to perform a fast bind.
#define LDB_EXTENDED_PASSWORD_CHANGE_OID '1.3.6.1.4.1.4203.1.11.1'¶
OID for LDAP Extended Operation PASSWORD_CHANGE. This Extended operation is used to allow user password changes by the user itself.
#define LDB_EXTENDED_SEQUENCE_NUMBER '1.3.6.1.4.1.7165.4.4.3'¶
OID for LDAP Extended Operation SEQUENCE_NUMBER. This extended operation is used to retrieve the extended sequence number.
#define LDB_EXTENDED_START_TLS_OID '1.3.6.1.4.1.1466.20037'¶
OID for LDAP Extended Operation START_TLS. This Extended operation is used to start a new TLS channel on top of a clear text channel.
#define LDB_EXTENDED_WHOAMI_OID '1.3.6.1.4.1.4203.1.11.3'¶
OID for RFC4532 'Who Am I' extended operation.
#define LDB_FLAG_FORCE_NO_BASE64_LDIF 4¶
Flag value used in ldb_ldif_write_trace() to enforce binary encoded attribute values per attribute. This is a genuine flag, being outside LDB_FLAG_MOD_MASK and also outside LDB_FLAG_INTERNAL_MASK
#define LDB_FLAG_INTERNAL_MASK 0xFFFFFFF0¶
flag bits on an element usable only by the internal implementation
#define LDB_FLAG_MOD_ADD 1¶
Value used in ldap_modify() to indicate that attributes are being added.
See also
#define LDB_FLAG_MOD_DELETE 3¶
Value used in ldap_modify() to indicate that attributes are being deleted.
See also
#define LDB_FLAG_MOD_MASK 0x3¶
There are a number of flags that are used with ldap_modify() in ldb_message_element.flags fields. The LDB_FLAG_MOD_ADD, LDB_FLAG_MOD_DELETE and LDB_FLAG_MOD_REPLACE are better thought of as an enumeration, not flags, and are used in ldap_modify() calls to specify whether attributes are being added, deleted or modified respectively.
#define LDB_FLAG_MOD_REPLACE 2¶
Value used in ldap_modify() to indicate that attributes are being replaced.
See also
#define LDB_FLAG_MOD_TYPE(flags) ((flags) & LDB_FLAG_MOD_MASK)¶
use this to extract the mod type (enum) from the operation
#define LDB_FLG_DONT_CREATE_DB 64¶
Flags to tell LDB not to create a new database file: Without this flag ldb_tdb (for example) will create a blank file during an invocation of ldb_connect(), even when the caller only wanted read operations, for example in ldbsearch.
#define LDB_FLG_ENABLE_TRACING 32¶
Flags to enable ldb tracing.
#define LDB_FLG_NOMMAP 8¶
Flag to tell backends not to use mmap.
#define LDB_FLG_NOSYNC 2¶
Flag value for database connection mode. If LDB_FLG_NOSYNC is used in ldb_connect, then the database will be opened without synchronous operations, if possible.
#define LDB_FLG_RDONLY 1¶
Flag value for database connection mode. If LDB_FLG_RDONLY is used in ldb_connect, then the database will be opened read-only, if possible.
Examples
ldbreader.c.
#define LDB_FLG_RECONNECT 4¶
Flag value to specify autoreconnect mode. If LDB_FLG_RECONNECT is used in ldb_connect, then the backend will be opened in a way that makes it try to auto reconnect if the connection is dropped (actually make sense only with ldap).
#define LDB_FLG_SHOW_BINARY 16¶
Flag to tell ldif handlers not to force encoding of binary structures in base64.
#define LDB_OID_COMPARATOR_AND '1.2.840.113556.1.4.803'¶
OID for logic AND comparison. This is the well known object ID for a logical AND comparator.
#define LDB_OID_COMPARATOR_OR '1.2.840.113556.1.4.804'¶
OID for logic OR comparison. This is the well known object ID for a logical OR comparator.
#define LDB_SYNTAX_BOOLEAN '1.3.6.1.4.1.1466.115.121.1.7'¶
LDAP attribute syntax for a boolean. This is the well-known LDAP attribute syntax for a boolean.
See RFC 2252, Section 4.3.2
#define LDB_SYNTAX_DIRECTORY_STRING '1.3.6.1.4.1.1466.115.121.1.15'¶
LDAP attribute syntax for a Directory String. This is the well-known LDAP attribute syntax for a Directory String.
See also
#define LDB_SYNTAX_DN '1.3.6.1.4.1.1466.115.121.1.12'¶
LDAP attribute syntax for a DN. This is the well-known LDAP attribute syntax for a DN.
See RFC 2252, Section 4.3.2
#define LDB_SYNTAX_INTEGER '1.3.6.1.4.1.1466.115.121.1.27'¶
LDAP attribute syntax for an integer. This is the well-known LDAP attribute syntax for an integer.
See RFC 2252, Section 4.3.2
#define LDB_SYNTAX_OCTET_STRING '1.3.6.1.4.1.1466.115.121.1.40'¶
LDAP attribute syntax for an octet string. This is the well-known LDAP attribute syntax for an octet string.
See RFC 2252, Section 4.3.2
#define LDB_SYNTAX_ORDERED_INTEGER 'LDB_SYNTAX_ORDERED_INTEGER'¶
Custom attribute syntax for an integer whose index is lexicographically ordered by attribute value in the database.
#define LDB_SYNTAX_UTC_TIME '1.3.6.1.4.1.1466.115.121.1.53'¶
LDAP attribute syntax for UTC time. This is the well-known LDAP attribute syntax for a UTC time.
See RFC 2252, Section 4.3.2
#define LDB_TYPESAFE_QSORT(base, numel, opaque, comparison)¶
Value:
do { if (numel > 1) { ldb_qsort(base, numel, sizeof((base)[0]), discard_const(opaque), (ldb_qsort_cmp_fn_t)comparison); if (0) { comparison(&((base)[0]), &((base)[1]), opaque); } } } while (0)
#define TYPESAFE_QSORT(base, numel, comparison)¶
Value:
do { if (numel > 1) { qsort(base, numel, sizeof((base)[0]), (int (*)(const void *, const void *))comparison); if (0) { comparison(&((base)[0]), &((base)[1])); } } } while (0)
Function Documentation¶
int int ldb_add (struct ldb_context * ldb, const struct ldb_message * message)¶
Add a record to the database. This function adds a record to the database. This function will fail if a record with the specified class and key already exists in the database.
Parameters
message the message containing the record to add.
Returns
int ldb_base64_decode (char * s)¶
Base64 decode a buffer. This function decodes a base64 encoded string in place.
Parameters
Returns
Note
char* ldb_base64_encode (TALLOC_CTX * mem_ctx, const char * buf, int len)¶
Base64 encode a buffer.
Parameters
buf pointer to the array that is to be encoded
len the number of elements in the array to be encoded
Returns
Note
char* ldb_binary_encode (TALLOC_CTX * mem_ctx, struct ldb_val val)¶
Encode a binary blob. This function encodes a binary blob using the encoding rules in RFC 2254 (Section 4). This function also escapes any non-printable characters.
Parameters
val the (potentially) binary data to be encoded
Returns
See also
char* ldb_binary_encode_string (TALLOC_CTX * mem_ctx, const char * string)¶
Encode a string. This function encodes a string using the encoding rules in RFC 2254 (Section 4). This function also escapes any non-printable characters.
Parameters
string the string to be encoded
Returns
See also
int ldb_build_add_req (struct ldb_request ** ret_req, struct ldb_context * ldb, TALLOC_CTX * mem_ctx, const struct ldb_message * message, struct ldb_control ** controls, void * context, ldb_request_callback_t callback, struct ldb_request * parent)¶
Helper function to build an add request.
Parameters
ldb the context associated with the database (from ldb_init())
mem_ctx a talloc memory context (used as parent of ret_req)
message contains the entry to be added
controls an array of controls
context the callback function context
callback the callback function to handle the async replies
parent the parent request if any
Returns
int ldb_build_del_req (struct ldb_request ** ret_req, struct ldb_context * ldb, TALLOC_CTX * mem_ctx, struct ldb_dn * dn, struct ldb_control ** controls, void * context, ldb_request_callback_t callback, struct ldb_request * parent)¶
Helper function to build a delete request.
Parameters
ldb the context associated with the database (from ldb_init())
mem_ctx a talloc memory context (used as parent of ret_req)
dn the DN to be deleted
controls an array of controls
context the callback function context
callback the callback function to handle the async replies
parent the parent request if any
Returns
int ldb_build_extended_req (struct ldb_request ** ret_req, struct ldb_context * ldb, TALLOC_CTX * mem_ctx, const char * oid, void * data, struct ldb_control ** controls, void * context, ldb_request_callback_t callback, struct ldb_request * parent)¶
Helper function to build a extended request.
Parameters
ldb the context associated with the database (from ldb_init())
mem_ctx a talloc memory context (used as parent of ret_req)
oid the OID of the extended operation.
data a void pointer a the extended operation specific parameters, it needs to be NULL or a valid talloc pointer! talloc_get_type() will be used on it
controls an array of controls
context the callback function context
callback the callback function to handle the async replies
parent the parent request if any
Returns
int ldb_build_mod_req (struct ldb_request ** ret_req, struct ldb_context * ldb, TALLOC_CTX * mem_ctx, const struct ldb_message * message, struct ldb_control ** controls, void * context, ldb_request_callback_t callback, struct ldb_request * parent)¶
Helper function to build a modify request.
Parameters
ldb the context associated with the database (from ldb_init())
mem_ctx a talloc memory context (used as parent of ret_req)
message contains the entry to be modified
controls an array of controls
context the callback function context
callback the callback function to handle the async replies
parent the parent request if any
Returns
int ldb_build_rename_req (struct ldb_request ** ret_req, struct ldb_context * ldb, TALLOC_CTX * mem_ctx, struct ldb_dn * olddn, struct ldb_dn * newdn, struct ldb_control ** controls, void * context, ldb_request_callback_t callback, struct ldb_request * parent)¶
Helper function to build a rename request.
Parameters
ldb the context associated with the database (from ldb_init())
mem_ctx a talloc memory context (used as parent of ret_req)
olddn the old DN
newdn the new DN
controls an array of controls
context the callback function context
callback the callback function to handle the async replies
parent the parent request if any
Returns
int ldb_build_search_req (struct ldb_request ** ret_req, struct ldb_context * ldb, TALLOC_CTX * mem_ctx, struct ldb_dn * base, enum ldb_scope scope, const char * expression, const char *const * attrs, struct ldb_control ** controls, void * context, ldb_request_callback_t callback, struct ldb_request * parent)¶
Helper function to build a search request.
Parameters
ldb the context associated with the database (from ldb_init())
mem_ctx a talloc memory context (used as parent of ret_req)
base the Base Distinguished Name for the query (use ldb_dn_new() for an empty one)
scope the search scope for the query
expression the search expression to use for this query
attrs the search attributes for the query (pass NULL if none required)
controls an array of controls
context the callback function context
callback the callback function to handle the async replies
parent the parent request if any
Returns
char* ldb_casefold (struct ldb_context * ldb, TALLOC_CTX * mem_ctx, const char * s, size_t n)¶
Casefold a string. Note that the callback needs to be ASCII compatible. So first ASCII needs to be handle before any UTF-8. This is needed to avoid issues with dottet languages.
Parameters
mem_ctx the memory context to allocate the result string memory from.
s the string that is to be folded
Returns
Note
int ldb_connect (struct ldb_context * ldb, const char * url, unsigned int flags, const char * options[])¶
Connect to a database. This is typically called soon after ldb_init(), and is required prior to any search or database modification operations.
The URL can be one of the following forms:
Parameters
url the URL of the database to connect to, as noted above
flags a combination of LDB_FLG_* to modify the connection behaviour
options backend specific options - passed uninterpreted to the backend
Returns
Note
Examples
ldbreader.c.
char* ldb_control_to_string (TALLOC_CTX * mem_ctx, const struct ldb_control * control)¶
Convert a control into its string representation.
Parameters
control A struct ldb_control to convert
Returns
int ldb_delete (struct ldb_context * ldb, struct ldb_dn * dn)¶
Delete a record from the database. This function deletes a record from the database.
Parameters
dn the DN for the record to be deleted.
Returns
char* ldb_dn_alloc_linearized (TALLOC_CTX * mem_ctx, struct ldb_dn * dn)¶
Allocate a copy of the linear form of a DN (without any extended components) onto the supplied memory context.
Parameters
mem_ctx TALLOC context to return result on
struct ldb_dn struct ldb_dn* ldb_dn_from_ldb_val (TALLOC_CTX * mem_ctx, struct ldb_context * ldb, const struct ldb_val * strdn)¶
Allocate a new DN from a struct ldb_val (useful to avoid buffer overrun)
Parameters
dn The new DN
Note
char* ldb_dn_get_extended_linearized (TALLOC_CTX * mem_ctx, struct ldb_dn * dn, int mode)¶
Get the linear form of a DN (with any extended components)
Parameters
dn The DN to linearize
mode Style of extended DN to return (0 is HEX representation of binary form, 1 is a string form)
const char* ldb_dn_get_linearized (struct ldb_dn * dn)¶
Get the linear form of a DN (without any extended components)
Parameters
struct ldb_dn* ldb_dn_new (TALLOC_CTX * mem_ctx, struct ldb_context * ldb, const char * dn)¶
Allocate a new DN from a string.
Parameters
dn The new DN
Note
struct ldb_dn* ldb_dn_new_fmt (TALLOC_CTX * mem_ctx, struct ldb_context * ldb, const char * new_fmt, ...)¶
Allocate a new DN from a printf style format string and arguments.
Parameters
new_fms The new DN as a format string (plus arguments)
Note
bool ldb_dn_validate (struct ldb_dn * dn)¶
Determine if this DN is syntactically valid.
Parameters
const char* ldb_errstring (struct ldb_context * ldb)¶
return extended error information from the last call
int ldb_extended (struct ldb_context * ldb, const char * oid, void * data, struct ldb_result ** res)¶
call an extended operation
Parameters
oid the OID of the extended operation.
data a void pointer a the extended operation specific parameters, it needs to be NULL or a valid talloc pointer! talloc_get_type() will be used on it
res the result of the extended operation
Returns
int ldb_extended_default_callback (struct ldb_request * req, struct ldb_reply * ares)¶
The default async extended operation callback function.
Parameters
ares a single reply from the async core
Returns
Note
unsigned int ldb_get_flags (struct ldb_context * ldb)¶
return the ldb flags
int ldb_global_init (void)¶
Initialise ldbs' global information. This is required before any other LDB call
Returns
struct ldb_context* ldb_init (TALLOC_CTX * mem_ctx, struct tevent_context * ev_ctx)¶
Initialise an ldb context. This is required before any other LDB call.
Parameters
Note
Returns
Examples
ldbreader.c, and ldifreader.c.
char* ldb_ldif_message_redacted_string (struct ldb_context * ldb, TALLOC_CTX * mem_ctx, enum ldb_changetype changetype, const struct ldb_message * msg)¶
Write an LDB message to a string.
Parameters
mem_ctx the talloc context on which to attach the string)
changetype LDB_CHANGETYPE_ADD or LDB_CHANGETYPE_MODIFY
msg the message to write out
Returns
Note
See also
char* ldb_ldif_message_string (struct ldb_context * ldb, TALLOC_CTX * mem_ctx, enum ldb_changetype changetype, const struct ldb_message * msg)¶
Write an LDB message to a string.
Parameters
mem_ctx the talloc context on which to attach the string)
changetype LDB_CHANGETYPE_ADD or LDB_CHANGETYPE_MODIFY
msg the message to write out
Returns
See also
int ldb_ldif_parse_modrdn (struct ldb_context * ldb, const struct ldb_ldif * ldif, TALLOC_CTX * mem_ctx, struct ldb_dn ** olddn, struct ldb_dn ** newrdn, bool * deleteoldrdn, struct ldb_dn ** newsuperior, struct ldb_dn ** newdn)¶
Parse a modrdn LDIF message from a struct ldb_message.
Parameters
ldif the preparsed LDIF chunk (from ldb_ldif_read())
mem_ctx the memory context that's used for return values
olddn the old dn as struct ldb_dn, if not needed pass NULL
newrdn the new rdn as struct ldb_dn, if not needed pass NULL
deleteoldrdn the deleteoldrdn value as bool, if not needed pass NULL
newsuperior the newsuperior dn as struct ldb_dn, if not needed pass NULL newsuperior can be NULL as it is optional in the LDIF
newdn the full constructed new dn as struct ldb_dn, if not needed pass NULL
struct ldb_ldif* ldb_ldif_read (struct ldb_context * ldb, int(*)(void *) fgetc_fn, void * private_data)¶
Read an LDIF message. This function creates an LDIF message using a caller supplied read function.
Parameters
fgetc_fn a function pointer for the read function. This must take a private data pointer, and must return a pointer to an integer corresponding to the next byte read (or EOF if there is no more data to be read).
private_data pointer that will be provided back to the read function. This is udeful for maintaining state or context.
Returns
Note
See also
ldb_ldif_read_string for a more convenient way to read from a string (char array).
ldb_ldif_write for the writer equivalent to this function.
struct ldb_ldif* ldb_ldif_read_file (struct ldb_context * ldb, FILE * f)¶
Read an LDIF message from a file. This function reads the next LDIF message from the contents of a file stream. If you want to get all of the LDIF messages, you will need to repeatedly call this function, until it returns NULL.
Parameters
f the file stream to read from (typically from fdopen())
See also
ldb_ldif_write_file for the writer equivalent to this function.
Examples
ldifreader.c.
void ldb_ldif_read_free (struct ldb_context * ldb, struct ldb_ldif * msg)¶
Clean up an LDIF message. This function cleans up a LDIF message read using ldb_ldif_read() or related functions (such as ldb_ldif_read_string() and ldb_ldif_read_file().
Parameters
msg the message to clean up and free
Examples
ldifreader.c.
struct ldb_ldif* ldb_ldif_read_string (struct ldb_context * ldb, const char ** s)¶
Read an LDIF message from a string. This function reads the next LDIF message from the contents of a char array. If you want to get all of the LDIF messages, you will need to repeatedly call this function, until it returns NULL.
Parameters
s pointer to the char array to read from
See also
ldb_ldif_write for a more general (arbitrary read function) version of this function.
int ldb_ldif_write (struct ldb_context * ldb, int(*)(void *, const char *,...) PRINTF_ATTRIBUTE fprintf_fn(2, 3), void * private_data, const struct ldb_ldif * ldif)¶
Write an LDIF message. This function writes an LDIF message using a caller supplied write function.
Parameters
fprintf_fn a function pointer for the write function. This must take a private data pointer, followed by a format string, and then a variable argument list.
private_data pointer that will be provided back to the write function. This is useful for maintaining state or context.
ldif the message to write out
Returns
See also
ldb_ldif_read for the reader equivalent to this function.
Examples
ldbreader.c, and ldifreader.c.
int ldb_ldif_write_file (struct ldb_context * ldb, FILE * f, const struct ldb_ldif * msg)¶
Write an LDIF message to a file.
Parameters
f the file stream to write to (typically from fdopen())
msg the message to write out
Returns
See also
char* ldb_ldif_write_string (struct ldb_context * ldb, TALLOC_CTX * mem_ctx, const struct ldb_ldif * msg)¶
Write an LDIF message to a string.
Parameters
mem_ctx the talloc context on which to attach the string)
msg the message to write out
Returns
See also
int ldb_modify (struct ldb_context * ldb, const struct ldb_message * message)¶
Modify the specified attributes of a record. This function modifies a record that is in the database.
Parameters
message the message containing the changes required.
Returns
int ldb_msg_add (struct ldb_message * msg, const struct ldb_message_element * el, int flags)¶
add a element to a ldb_message
int ldb_msg_add_empty (struct ldb_message * msg, const char * attr_name, int flags, struct ldb_message_element ** return_el)¶
add a new empty element to a ldb_message
int int ldb_msg_append_value (struct ldb_message * msg, const char * attr_name, const struct ldb_val * val, int flags)¶
append a element to a ldb_message
int ldb_msg_check_string_attribute (const struct ldb_message * msg, const char * name, const char * value)¶
Tries to find a certain string attribute in a message.
Parameters
name attribute name
value attribute value
Returns
int ldb_msg_difference (struct ldb_context * ldb, TALLOC_CTX * mem_ctx, struct ldb_message * msg1, struct ldb_message * msg2, struct ldb_message ** _msg_out)¶
return a ldb_message representing the differences between msg1 and msg2. If you then use this in a ldb_modify() call, it can be used to save edits to a message
Result message is constructed as follows:
- LDB_FLAG_MOD_ADD - elements found only in msg2
- LDB_FLAG_MOD_REPLACE - elements in msg2 that have different value in msg1 Value for msg2 element is used
- LDB_FLAG_MOD_DELETE - elements found only in msg2
Returns
int ldb_msg_element_add_value (TALLOC_CTX * mem_ctx, struct ldb_message_element * el, const struct ldb_val * val)¶
add a value to a message element
int int ldb_msg_element_compare (struct ldb_message_element * el1, struct ldb_message_element * el2)¶
compare two message elements - return 0 on match
struct ldb_message_element* ldb_msg_find_element (const struct ldb_message * msg, const char * attr_name)¶
Find an element within an message.
const struct ldb_val* ldb_msg_find_ldb_val (const struct ldb_message * msg, const char * attr_name)¶
Find elements in a message. This function finds elements and converts to a specific type, with a give default value if not found. Assumes that elements are single valued.
struct ldb_val* ldb_msg_find_val (const struct ldb_message_element * el, struct ldb_val * val)¶
find a value within an ldb_message_element
Parameters
val the value to search for
Note
struct ldb_message* ldb_msg_new (TALLOC_CTX * mem_ctx)¶
Create an empty message.
Parameters
int ldb_msg_sanity_check (struct ldb_context * ldb, const struct ldb_message * msg)¶
Integrity check an ldb_message. This function performs basic sanity / integrity checks on an ldb_message.
Parameters
msg the message to check
Returns
int ldb_op_default_callback (struct ldb_request * req, struct ldb_reply * ares)¶
The default async extended operation callback function.
Parameters
ares a single reply from the async core
Returns
struct ldb_control* ldb_parse_control_from_string (struct ldb_context * ldb, TALLOC_CTX * mem_ctx, const char * control_strings)¶
Convert a string representing a control into a ldb_control structure.
Parameters
mem_ctx TALLOC context to return result on, and to allocate error_string on
control_strings A string-formatted control
Returns
struct ldb_control** ldb_parse_control_strings (struct ldb_context * ldb, TALLOC_CTX * mem_ctx, const char ** control_strings)¶
Convert an array of string representation of a control into an array of ldb_control structures.
Parameters
mem_ctx TALLOC context to return result on, and to allocate error_string on
control_strings Array of string-formatted controls
Returns
int ldb_rename (struct ldb_context * ldb, struct ldb_dn * olddn, struct ldb_dn * newdn)¶
Rename a record in the database. This function renames a record in the database.
Parameters
olddn the DN for the record to be renamed.
newdn the new DN
Returns
struct ldb_control* ldb_reply_get_control (struct ldb_reply * rep, const char * oid)¶
check if a control with the specified 'oid' exist and return it
Parameters
oid the object identifier of the control as string
Returns
int ldb_request_add_control (struct ldb_request * req, const char * oid, bool critical, void * data)¶
Add a ldb_control to a ldb_request.
Parameters
oid the object identifier of the control as string
critical whether the control should be critical or not
data a talloc pointer to the control specific data
Returns
struct ldb_control* ldb_request_get_control (struct ldb_request * req, const char * oid)¶
check if a control with the specified 'oid' exist and return it
Parameters
oid the object identifier of the control as string
Returns
int ldb_request_replace_control (struct ldb_request * req, const char * oid, bool critical, void * data)¶
replace a ldb_control in a ldb_request
Parameters
oid the object identifier of the control as string
critical whether the control should be critical or not
data a talloc pointer to the control specific data
Returns
int ldb_search (struct ldb_context * ldb, TALLOC_CTX * mem_ctx, struct ldb_result ** result, struct ldb_dn * base, enum ldb_scope scope, const char *const * attrs, const char * exp_fmt, ...)¶
Search the database. This function searches the database, and returns records that match an LDAP-like search expression
Parameters
mem_ctx the memory context to use for the request and the results
result the return result
base the Base Distinguished Name for the query (use ldb_dn_new() for an empty one)
scope the search scope for the query
attrs the search attributes for the query (pass NULL if none required)
exp_fmt the search expression to use for this query (printf like)
Returns
Note
Examples
ldbreader.c.
int ldb_search_default_callback (struct ldb_request * req, struct ldb_reply * ares)¶
The default async search callback function.
Parameters
ares a single reply from the async core
Returns
Note
int ldb_sequence_number (struct ldb_context * ldb, enum ldb_sequence_type type, uint64_t * seq_num)¶
Obtain current/next database sequence number.
int ldb_set_debug (struct ldb_context * ldb, void(*)(void *context, enum ldb_debug_level level, const char *fmt, va_list ap) PRINTF_ATTRIBUTE debug(3, 0), void * context)¶
this allows the user to set a debug function for error reporting
int ldb_set_debug_stderr (struct ldb_context * ldb)¶
this sets up debug to print messages on stderr
void ldb_set_utf8_default (struct ldb_context * ldb)¶
setup the default utf8 functions FIXME: these functions do not yet handle utf8
void ldb_set_utf8_fns (struct ldb_context * ldb, void * context, char *(*)(void *, void *, const char *, size_t n) casefold)¶
this allows the user to set custom utf8 function for error reporting. make sure it is able to handle ASCII first, so it prevents issues with dottet languages.
const char* ldb_strerror (int ldb_err)¶
return a string explaining what a ldb error constant means
time_t ldb_string_to_time (const char * s)¶
Convert a string to a time structure. This function converts an LDAP formatted GeneralizedTime string to a time_t structure.
Parameters
Returns
time_t ldb_string_utc_to_time (const char * s)¶
Convert a string to a time structure. This function converts an LDAP formatted UTCTime string to a time_t structure.
Parameters
Returns
char* ldb_timestring (TALLOC_CTX * mem_ctx, time_t t)¶
Convert a time structure to a string. This function converts a time_t structure to an LDAP formatted GeneralizedTime string.
Parameters
t the time structure to convert
Returns
char* ldb_timestring_utc (TALLOC_CTX * mem_ctx, time_t t)¶
Convert a time structure to a string. This function converts a time_t structure to an LDAP formatted UTCTime string.
Parameters
t the time structure to convert
Returns
int ldb_transaction_cancel (struct ldb_context * ldb)¶
cancel a transaction
int ldb_transaction_commit (struct ldb_context * ldb)¶
commit a transaction
int ldb_transaction_prepare_commit (struct ldb_context * ldb)¶
first phase of two phase commit
int ldb_transaction_start (struct ldb_context * ldb)¶
start a transaction
struct ldb_val ldb_val_dup (TALLOC_CTX * mem_ctx, const struct ldb_val * v)¶
Duplicate an ldb_val structure. This function copies an ldb value structure.
Parameters
v the ldb_val to be duplicated.
Returns
int ldb_val_equal_exact (const struct ldb_val * v1, const struct ldb_val * v2)¶
Compare two ldb_val values.
Parameters
v2 second ldb_val structure to be tested
Returns
int ldb_val_to_time (const struct ldb_val * v, time_t * t)¶
convert a LDAP GeneralizedTime string in ldb_val format to a time_t.
int ldb_valid_attr_name (const char * s)¶
Check the attribute name is valid according to rfc2251.
Parameters
Returns
Author¶
Generated automatically by Doxygen for LDB from the source code.
Mon Dec 4 2023 | LDB |